// pages/Sale/Sale.js
const app = getApp();
const db = wx.cloud.database()
var util = require("../../util/util"); //时间

Page({

  /**
   * 页面的初始数据
   */
  data: {
    name: '',
    price: '',  
    discript: '',
    img_local_files:[], // 保存被选择图片的本地路径
    img_cloud_files: [], // 保存上传到云存储的图片路径
    cloud_size: 0,
    tags:['优惠券码',
          '电子产品',
          '二手书籍',
          '饮料零食',
          '骑行载具',
          '模型手办',
          '日用家具',
          '装饰摆件',
          '虚拟产品',
          '娱乐用品',
          '其他'],
    tag_choice:"", //选择的标签
    colorIndex: null,

    hideAddImg: false, // 隐藏添加图片的按钮
    userI:{}  // 保存用户信息
  },

  // 物品名称
  name1: function(e) {
    this.setData({
      name: e.detail.value
    })
    // console.log(e.detail.value)
  },

  //价格
  price1: function(e){
    this.setData({
      price: e.detail.value
    })
  },

  //商品描述
  discript1:function(e){
    this.setData({
      discript: e.detail.value
    })
  },

  // 选择图片
  localImgChoose(){
    var that = this;
    wx.chooseImage({  //异步方法
      count: 1,//最多选择图片数量
      sizeType:['original', 'compressed'],//选择的图片尺寸 原图，压缩图
      sourceType:['album','camera'],//相册选图，相机拍照
      success: (res) => {
        //const tempFilePaths = res.tempFilePaths
        that.setData({
          img_local_files: that.data.img_local_files.concat(res.tempFilePaths[0]),
        });

        //大于三张, 隐藏添加按钮
        if(that.data.img_local_files.length >= 3) {
          that.setData({
            hideAddImg: true
          })
        }
      }
    })

  },

  uploadImage(i) {
    wx.cloud.uploadFile({ //上传至微信云存储
      cloudPath:'GoodsImage/' + new Date().getTime() + ".jpg",//使用时间戳加随机数给图片命名
      filePath:this.data.img_local_files[i],// 本地文件路径
      success: (res) => {
        // 返回文件 ID
        // console.log("图片上传成功", res.fileID)
        this.setData({
          img_cloud_files: this.data.img_cloud_files.concat(res.fileID) 
        })
        console.log("图片上传成功", res.fileID)
        wx.hideLoading();
      },
      fail: (err) =>{
        // this.setData({
        //   img_cloud_files:[]
        // })
        wx.hideLoading();
        wx.showToast({
          icon:'none',
          title: '上传失败，请重新上传',
        })
      }
    })
  },

  // 标签选择处理函数
  tagSelect: function(e) {
    this.setData({
      tag_choice: this.data.tags[e.currentTarget.dataset.index],
      colorIndex: e.currentTarget.dataset.index
    })
  },

  // 发布按钮的处理函数
  upLoadBtn:function(e){
    if(!this.data.name){
      wx.showToast({
        icon:'none',
        title: '请填写商品名称'
      })
    }
    else if(!this.data.price){
      wx.showToast({
        icon:'none',
        title: '请填商品价格'
      })
    }
    else if(!this.data.discript){
      wx.showToast({
        icon:'none',
        title: '请填写商品描述'
      })
    }
    else if(!this.data.img_local_files.length){
      wx.showToast({
        icon:'none',
        title: '请至少上传一张商品图片'
      })
    }
    else if(!this.data.tag_choice){
      wx.showToast({
        icon:'none',
        title: '请选择一个标签'
      })
    }
    else{
      wx.showLoading({
        title: '上传中',
      })
      let promiseArr = [];
      //上传图片
      for(let i=0; i<this.data.img_local_files.length; i++) {
        promiseArr.push(new Promise((reslove, reject) => {
          wx.cloud.uploadFile({ //上传至微信云存储
            cloudPath:'GoodsImage/' + new Date().getTime() + ".jpg",//使用时间戳加随机数给图片命名
            filePath:this.data.img_local_files[i],// 本地文件路径
            success: (res) => {
              // 返回文件 ID
              // console.log("图片上传成功", res.fileID)
              this.setData({
                img_cloud_files: this.data.img_cloud_files.concat(res.fileID) 
              })
              // console.log("图片上传成功", res.fileID)
              reslove();
              wx.hideLoading();
            },
            fail: (err) =>{
              this.setData({
                img_cloud_files:[]
              })
              wx.hideLoading();
              wx.showToast({
                icon:'none',
                title: '上传失败，请重新上传',
              })
            }
          })
        }))
      }

      //异步逻辑，保证图片先上传成功
      Promise.all(promiseArr).then(res => {
        
        // console.log("图片上传完成后再执行");
        
        // 将填写内容上传到数据库
        db.collection('Goods').add({
          data:{
            name: this.data.name,
            price: parseInt(this.data.price), //转换为int型
            discript: this.data.discript,
            images: this.data.img_cloud_files,
            tag: this.data.tag_choice,

            time: util.formatTime(new Date()),
            userid: this.data.userI._id,
            userName: this.data.userI.nickName,
            userAvatar:this.data.userI.avatar
          },
          success:(res) => {
            //上传成功后清空数据
            this.setData({
              name: "",
              price: "",
              discript: "",
              hideAddImg: false,
              img_local_files: [],
              img_cloud_files: [],
              tag_choice: "",
              colorIndex: null
            })
            wx.showToast({
              icon:'success',
              title: '发布成功！'
            })
            // 发布完成延时0.5s后，返回商品列表
            setTimeout(()=>{
              wx.navigateBack({
                delta: 1,
              })
            }, 500)
          },
          fail:(err) => {
            // console.log(err)
            wx.showToast({
              icon:'Fail',
              title: '发布失败！'
            })
          },
        })
      })
    }

  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

    // 获取用户信息
    var that = this;
    db.collection('Users')
    .where({
      nickName:app.globalData.userInfo.nickName
      })
    .get({
      success:function(res){
        that.setData({
          userI:res.data[0]
        })
        // console.log(that.data.userI)
      }
    })

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})